package com.engineering.elink.service;

import java.util.Map;

import com.engineering.elink.co.EvaluateCo;
import com.zxy.core.co.BaseCo;

/**
 * 
 * 课程评价业务操作接口
 * 
 * ClassName: EvaluateService <br/> 
 * Function: ADD FUNCTION. <br/> 
 * Reason: ADD REASON(可选). <br/> 
 * date: 2016年10月19日 下午1:37:58 <br/> 
 * 
 * @author zengxinyan 
 * @version  
 * @since JDK 1.8
 */
public interface EvaluateService {


	
	/**
	 * 
	 * 分页获取课程的一级评价
	 * 
	 * getTopEvaluatesByCourseId:(这里用一句话描述这个方法的作用). <br/> 
	 * 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String, Object> getTopEvaluatesByCourseId(EvaluateCo co,int type);
	
	/**
	 * 
	 * 通过层级ID获取所有回复的评价
	 * 
	 * getAllEvaluatesByTopId:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @param topId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String, Object> getAllEvaluatesByTopId(BaseCo co,Integer topId,Integer type,boolean parentFlag);
	

	
	/**
	 * 
	 * 评价顶和踩
	 * 
	 * addPraiseEvaluate:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param evalCommentId
	 * @param praiseType
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String, Object> addPraiseEvaluate(Integer evalCommentId,Integer praiseType,String userId,Integer type);
	
	/**
	 * 
	 * 获取评价我的课程信息
	 * 
	 * getEvaluateForMe:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String, Object> getEvaluateForMe(BaseCo co,String userId,int type);
	
	/**
	 * 获取我评价的课程信息
	 * 
	 * getMyEvaluate:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String, Object> getMyEvaluate(BaseCo co,String userId,int type);
	
}
